<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>State Lattice Planner: state_lattice_planner</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">State Lattice Planner
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('index.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="PageDoc"><div class="header">
  <div class="headertitle">
<div class="title">state_lattice_planner </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p><a href="https://travis-ci.org/amslabtech/state_lattice_planner"><object type="image/svg+xml" data="https://travis-ci.org/amslabtech/state_lattice_planner.svg?branch=master" style="pointer-events: none;">Build Status</object></a> <object type="image/svg+xml" data="https://img.shields.io/github/issues/amslabtech/state_lattice_planner.svg" style="pointer-events: none;">issue_opened</object> <object type="image/svg+xml" data="https://img.shields.io/github/issues-closed/amslabtech/state_lattice_planner.svg" style="pointer-events: none;">issue_closed</object></p>
<h1><a class="anchor" id="autotoc_md1"></a>
Overview</h1>
<p>TBW</p>
<h1><a class="anchor" id="autotoc_md2"></a>
Enviornment</h1>
<ul>
<li>Ubuntu 16.04 or 18.04</li>
<li>ROS Kinetic or Melodic</li>
</ul>
<h1><a class="anchor" id="autotoc_md3"></a>
Install and Build</h1>
<div class="fragment"><div class="line">cd catkin_workspace/src</div>
<div class="line">git clone https://github.com/amslabtech/state_lattice_planner.git</div>
<div class="line">cd ..</div>
<div class="line">catkin_make</div>
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md4"></a>
Nodes</h1>
<h2><a class="anchor" id="autotoc_md5"></a>
state_lattice_planner</h2>
<ul>
<li>local planner node </li>
</ul>
<h3><a class="anchor" id="autotoc_md6"></a>
Published topics</h3>
<ul>
<li>/cmd_vel (geometry_msgs/Twist)</li>
<li>~/candidate_trajectoryies (visualization_msgs/MarkerArray)<ul>
<li>for visualization</li>
</ul>
</li>
<li>~/candidate_trajectoryies/no_collision (visualization_msgs/MarkerArray)<ul>
<li>for visualization</li>
</ul>
</li>
</ul>
<h3><a class="anchor" id="autotoc_md7"></a>
Subscribed topics</h3>
<ul>
<li>/local_goal (geometry_msgs/PoseStamped)<ul>
<li>the local goal must be in the local map</li>
</ul>
</li>
<li>/local_map (nav_msgs/OccupancyGrid)<ul>
<li>robot-centered costmap</li>
</ul>
</li>
<li>/odom (nav_msgs/Odometry)<ul>
<li>robot odometry</li>
</ul>
</li>
</ul>
<h3><a class="anchor" id="autotoc_md8"></a>
Parameters</h3>
<ul>
<li>HZ<ul>
<li>main loop rate (default: 20[Hz])</li>
</ul>
</li>
<li>ROBOT_FRAME<ul>
<li>robot's coordinate frame (default: base_link)</li>
</ul>
</li>
<li>N_P<ul>
<li>number of terminal state sampling for x-y position (default: 10)</li>
</ul>
</li>
<li>N_H<ul>
<li>number of terminal state sampling for heading direction (default: 3)</li>
</ul>
</li>
<li>MAX_ALPHA<ul>
<li>max terminal state sampling direction (default: M_PI/3.0[rad/s])</li>
</ul>
</li>
<li>MAX_PSI<ul>
<li>max heading direction at terminal state (default: M_PI/6.0[rad/s])</li>
</ul>
</li>
<li>N_S<ul>
<li>parameter for globally guided sampling (default: 1000)</li>
</ul>
</li>
<li>MAX_ACCELERATION<ul>
<li>max acceleration of robot (absolute value)(default: 1.0[m/ss])</li>
</ul>
</li>
<li>TARGET_VELOCITY<ul>
<li>max velocity of robot's target velocity (default: 0.8[m/s])</li>
</ul>
</li>
<li>LOOKUP_TABLE_FILE_NAME<ul>
<li>absolute path of lookup table (default: $HOME/lookup_table.csv)</li>
</ul>
</li>
<li>MAX_ITERATION<ul>
<li>max number of iteration (default: 100)</li>
</ul>
</li>
<li>OPTIMIZATION_TOLERANCE<ul>
<li>when the cost becomes lower than this parameter, optimization loop is finished (default: 0.1)</li>
</ul>
</li>
<li>MAX_CURVATURE<ul>
<li>max trajectory curvature (default: 1.0[rad/m])</li>
</ul>
</li>
<li>MAX_D_CURVATURE<ul>
<li>max time derivative of trajectory curvature (default: 2.0[rad/ms]</li>
</ul>
</li>
<li>MAX_YAWRATE<ul>
<li>max robot's yawrate (default: 0.8[rad/s])</li>
</ul>
</li>
</ul>
<h3><a class="anchor" id="autotoc_md9"></a>
Runtime requirement</h3>
<ul>
<li>TF (from /odom to /base_link) is required</li>
</ul>
<h2><a class="anchor" id="autotoc_md10"></a>
lookup_table_generator</h2>
<ul>
<li>this node is a tool for generating a lookup table, not for planning. so this node doesn't publish or subscribe topics. </li>
</ul>
<h3><a class="anchor" id="autotoc_md11"></a>
Parameters</h3>
<ul>
<li>MIN_X<ul>
<li>target state sampling parameter (default: 1.0[m])</li>
</ul>
</li>
<li>MAX_X<ul>
<li>target state sampling parameter (default: 7.0[m])</li>
</ul>
</li>
<li>DELTA_X<ul>
<li>target state sampling parameter (default: 1.0[m])</li>
</ul>
</li>
<li>MAX_Y<ul>
<li>target state sampling parameter (default: 3.0[m])</li>
</ul>
</li>
<li>DELTA_Y<ul>
<li>target state sampling parameter (default: 1.0[m])</li>
</ul>
</li>
<li>MAX_YAW<ul>
<li>target state sampling parameter (default: 1.0471975[rad])</li>
</ul>
</li>
<li>DELTA_YAW<ul>
<li>target state sampling parameter (default: 1.0471975[rad])</li>
</ul>
</li>
<li>LOOKUP_TABLE_FILE_NAME<ul>
<li>full path of lookup_table.csv</li>
</ul>
</li>
<li>MIN_V<ul>
<li>initial velocity sampling parameter (default: 0.1[m/s])</li>
</ul>
</li>
<li>MAX_V<ul>
<li>initial velocity sampling parameter (default: 0.8[m/s])</li>
</ul>
</li>
<li>DELTA_V<ul>
<li>initial velocity sampling parameter (default: 0.1[m/s])</li>
</ul>
</li>
<li>MAX_KAPPA<ul>
<li>initial curvature sampling parameter (default: 1.0[rad/m])</li>
</ul>
</li>
<li>DELTA_KAPPA<ul>
<li>initial curvature sampling parameter (default: 0.2[rad/m])</li>
</ul>
</li>
<li>MAX_ACCELERATION<ul>
<li>max acceleration of robot (default: 1.0[m/ss])</li>
</ul>
</li>
<li>MAX_CURVATURE<ul>
<li>max trajectory curvature (default: 1.0[rad/m])</li>
</ul>
</li>
<li>MAX_D_CURVATURE<ul>
<li>max time derivative of trajectory curvature (default: 2.0[rad/ms])</li>
</ul>
</li>
<li>MAX_YAWRATE<ul>
<li>max yawrate of robot (default: 0.8[rad/s])</li>
</ul>
</li>
</ul>
<h1><a class="anchor" id="autotoc_md12"></a>
How to Use</h1>
<ul>
<li>for generating lookup table <div class="fragment"><div class="line">roslaunch state_lattice_planner generate_lookup_table.launch</div>
</div><!-- fragment --></li>
<li>for local path planning <div class="fragment"><div class="line">roslaunch state_lattice_planner local_planner.launch</div>
</div><!-- fragment --></li>
</ul>
<h1><a class="anchor" id="autotoc_md13"></a>
References</h1>
<ul>
<li><a href="https://www.ri.cmu.edu/publications/state-space-sampling-of-feasible-motions-for-high-performance-mobile-robot-navigation-in-complex-environments/">https://www.ri.cmu.edu/publications/state-space-sampling-of-feasible-motions-for-high-performance-mobile-robot-navigation-in-complex-environments/</a></li>
<li><a href="https://github.com/AtsushiSakai/PythonRobotics/tree/master/PathPlanning/StateLatticePlanner">https://github.com/AtsushiSakai/PythonRobotics/tree/master/PathPlanning/StateLatticePlanner</a> </li>
</ul>
</div></div><!-- PageDoc -->
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
  </ul>
</div>
</body>
</html>
